package cn.yotta.user.core.server.iface.login;

import cn.yotta.user.api.params.login.BaseLoginRequest;
import cn.yotta.user.core.server.dto.user.UserDto;

/**
 * @author wyaoyao
 * @date 2022/11/9 8:24
 */
public interface LoginProvider<T extends BaseLoginRequest> {

    /**
     * 实现登录能力，返回登录之后的用户数据
     * @param loginRequest 登录请求
     * @return 用户信息
     */
    UserDto auth(T loginRequest);

    /**
     * 是否支持当前登录请求
     * @param loginRequest
     */
    Boolean support(BaseLoginRequest loginRequest);

    /**
     * 获取当前登录凭证，比如密码，验证码等
     */
    default String getCredentials(T loginRequest){
        return loginRequest.getCredentials().get();
    };

    /**
     * 返回当前登录方式的用户唯一标识，比如用户名，手机号，邮箱
     */
    default String getPrincipal(T loginRequest){
        return loginRequest.getPrincipal().get();
    }


}
